package com.hedl.practice.diyJava.data.date_Instant.test;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Instant i = Instant.now();
        System.out.println(System.currentTimeMillis());     //毫秒
        System.out.println(i.getEpochSecond());     //秒
        System.out.println(i.toEpochMilli());       //毫秒

        /**
         * 使用instant获得时间戳
         * 转换成时区时间
         * 利用时区时间转换成本地化时间
         * 使用DateTimeFormatter.ofPattern()定义输出格式
         * 使用本地化日期时间调用.formea()方法，转为String类型
         * 输出
         */
        long l = i.toEpochMilli();
        ZonedDateTime zonedDateTime = i.atZone(ZoneId.systemDefault());
        LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
        String format = localDateTime.format(dateTimeFormatter);
        System.out.println(format);

        System.out.println("==============================");
        /**
         * 利用Instant.ofEpochSecond()我们传入时间戳
         * ZonedDateTime.ofInstant()传入的Instant,和默认的时区
         * 利用ZonedDateTime提供的toLocalDateTime()方法输出出来
         */
        long o = 1456757596;
        Instant instant = Instant.ofEpochSecond(o);
        ZonedDateTime zdt = ZonedDateTime.ofInstant(instant,ZoneId.systemDefault());
        System.out.println(zdt.toLocalDateTime());

    }
}
